package spms.data.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Repository
@Mapper
public interface BaseDao<T>{
	
	/**查询全部
	 * 子类无参查询时，实现类可直接传null做参数
	 * pojo对象有值时，按各值条件查询
	 * @param sql 自动拼接后的SQL条件，形如：name='ZhangSan' and age = 12 ...
	 * @param tableName 表名
	 * */
	List<T> findAll(@Param(value = "sql")String sql ,@Param(value = "tableName") String tableName);
	
	/**分页查询
	 * @param pageNum 当前页码
	 * @param pageSize 页面大小
	 * */
	List<T> findPage(int pageNum,int pageSize,@Param(value = "tableName") String tableName);
	
	/**更新数据 
	 * @param t
	 * */
	int update(T t);
	
	/**统计数据量
	 * 子类无参查询时，实现类可直接传null做参数
	 * @param tableName 表名
	 * */
	Integer count(@Param(value = "tableName") String tableName);
	
	int add(T t);
}
